import 'package:hotpot/generated/json/base/json_field.dart';
import 'package:hotpot/generated/json/product.g.dart';
import 'dart:convert';

@JsonSerializable()
class Product {

	int? id;
	@JSONField(name: "image_1920")
	String? image1920;
	// @JSONField(name: "image_1024")
	// String? image1024;
	// @JSONField(name: "image_512")
	// String? image512;
	// @JSONField(name: "image_256")
	// String? image256;
	// @JSONField(name: "image_128")
	// String? image128;
	// @JSONField(name: "activity_ids")
	// List<dynamic>? activityIds;
	// @JSONField(name: "activity_state")
	// bool? activityState;
	// @JSONField(name: "activity_user_id")
	// bool? activityUserId;
	// @JSONField(name: "activity_type_id")
	// bool? activityTypeId;
	// @JSONField(name: "activity_type_icon")
	// bool? activityTypeIcon;
	// @JSONField(name: "activity_date_deadline")
	// bool? activityDateDeadline;
	// @JSONField(name: "my_activity_date_deadline")
	// bool? myActivityDateDeadline;
	// @JSONField(name: "activity_summary")
	// bool? activitySummary;
	// @JSONField(name: "activity_exception_decoration")
	// bool? activityExceptionDecoration;
	// @JSONField(name: "activity_exception_icon")
	// bool? activityExceptionIcon;
	// @JSONField(name: "message_is_follower")
	// bool? messageIsFollower;
	// @JSONField(name: "message_follower_ids")
	// List<dynamic>? messageFollowerIds;
	// @JSONField(name: "message_partner_ids")
	// List<dynamic>? messagePartnerIds;
	// @JSONField(name: "message_ids")
	// List<int>? messageIds;
	// @JSONField(name: "has_message")
	// bool? hasMessage;
	// @JSONField(name: "message_needaction")
	// bool? messageNeedaction;
	// @JSONField(name: "message_needaction_counter")
	// int? messageNeedactionCounter;
	// @JSONField(name: "message_has_error")
	// bool? messageHasError;
	// @JSONField(name: "message_has_error_counter")
	// int? messageHasErrorCounter;
	// @JSONField(name: "message_attachment_count")
	// int? messageAttachmentCount;
	// @JSONField(name: "message_main_attachment_id")
	// bool? messageMainAttachmentId;
	// @JSONField(name: "website_message_ids")
	// List<String>? websiteMessageIds;
	@JSONField(name: "website_ribbon_id")
	List<String>? websiteRibbonId;
	// @JSONField(name: "message_has_sms_error")
	// bool? messageHasSmsError;
	String? name;
	// int? sequence;
	// bool? description;
	// @JSONField(name: "description_purchase")
	// bool? descriptionPurchase;
	@JSONField(name: "description_sale")
	String? descriptionSale;
	// @JSONField(name: "detailed_type")
	// String? detailedType;
	// String? type;
	@JSONField(name: "categ_id")
	List<String>? categId;
	// @JSONField(name: "currency_id")
	// List<int>? currencyId;
	// @JSONField(name: "cost_currency_id")
	// List<int>? costCurrencyId;
	@JSONField(name: "list_price")
	double? listPrice;
	// @JSONField(name: "standard_price")
	// double? standardPrice;
	// double? volume;
	// @JSONField(name: "volume_uom_name")
	// String? volumeUomName;
	// double? weight;
	// @JSONField(name: "weight_uom_name")
	// String? weightUomName;
	// @JSONField(name: "sale_ok")
	// bool? saleOk;
	// @JSONField(name: "purchase_ok")
	// bool? purchaseOk;
	// @JSONField(name: "uom_id")
	// List<int>? uomId;
	// @JSONField(name: "uom_name")
	// String? uomName;
	// @JSONField(name: "uom_po_id")
	// List<int>? uomPoId;
	// @JSONField(name: "company_id")
	// bool? companyId;
	// @JSONField(name: "packaging_ids")
	// List<dynamic>? packagingIds;
	// @JSONField(name: "seller_ids")
	// List<dynamic>? sellerIds;
	// @JSONField(name: "variant_seller_ids")
	// List<dynamic>? variantSellerIds;
	// bool? active;
	// int? color;
	// @JSONField(name: "is_product_variant")
	// bool? isProductVariant;
	// @JSONField(name: "attribute_line_ids")
	// List<dynamic>? attributeLineIds;
	// @JSONField(name: "valid_product_template_attribute_line_ids")
	// List<dynamic>? validProductTemplateAttributeLineIds;
	// @JSONField(name: "product_variant_ids")
	// List<int>? productVariantIds;
	// @JSONField(name: "product_variant_id")
	// List<int>? productVariantId;
	// @JSONField(name: "product_variant_count")
	// int? productVariantCount;
	String? barcode;
	@JSONField(name: "default_code")
	String? defaultCode;
	// @JSONField(name: "pricelist_item_count")
	// int? pricelistItemCount;
	// @JSONField(name: "can_image_1024_be_zoomed")
	// bool? canImage1024BeZoomed;
	// @JSONField(name: "has_configurable_attributes")
	// bool? hasConfigurableAttributes;
	// @JSONField(name: "product_tooltip")
	// String? productTooltip;
	// String? priority;
	// @JSONField(name: "product_tag_ids")
	// List<dynamic>? productTagIds;
	// @JSONField(name: "__last_update")
	// String? sLastUpdate;
	// @JSONField(name: "display_name")
	// String? displayName;
	// @JSONField(name: "create_uid")
	// List<int>? createUid;
	// @JSONField(name: "create_date")
	// String? createDate;
	// @JSONField(name: "write_uid")
	// List<int>? writeUid;
	// @JSONField(name: "write_date")
	// String? writeDate;
	// @JSONField(name: "taxes_id")
	// List<dynamic>? taxesId;
	// @JSONField(name: "tax_string")
	// String? taxString;
	// @JSONField(name: "supplier_taxes_id")
	// List<dynamic>? supplierTaxesId;
	// @JSONField(name: "property_account_income_id")
	// bool? propertyAccountIncomeId;
	// @JSONField(name: "property_account_expense_id")
	// bool? propertyAccountExpenseId;
	// @JSONField(name: "account_tag_ids")
	// List<dynamic>? accountTagIds;
	// @JSONField(name: "responsible_id")
	// List<int>? responsibleId;
	// @JSONField(name: "property_stock_production")
	// List<int>? propertyStockProduction;
	// @JSONField(name: "property_stock_inventory")
	// List<int>? propertyStockInventory;
	// @JSONField(name: "sale_delay")
	// double? saleDelay;
	// String? tracking;
	// @JSONField(name: "description_picking")
	// bool? descriptionPicking;
	// @JSONField(name: "description_pickingout")
	// bool? descriptionPickingout;
	// @JSONField(name: "description_pickingin")
	// bool? descriptionPickingin;
	@JSONField(name: "qty_available")
	double? qtyAvailable;
	// @JSONField(name: "virtual_available")
	// double? virtualAvailable;
	// @JSONField(name: "incoming_qty")
	// double? incomingQty;
	// @JSONField(name: "outgoing_qty")
	// double? outgoingQty;
	// @JSONField(name: "location_id")
	// bool? locationId;
	// @JSONField(name: "warehouse_id")
	// bool? warehouseId;
	// @JSONField(name: "has_available_route_ids")
	// bool? hasAvailableRouteIds;
	// @JSONField(name: "route_ids")
	// List<dynamic>? routeIds;
	// @JSONField(name: "nbr_moves_in")
	// int? nbrMovesIn;
	// @JSONField(name: "nbr_moves_out")
	// int? nbrMovesOut;
	// @JSONField(name: "nbr_reordering_rules")
	// int? nbrReorderingRules;
	// @JSONField(name: "reordering_min_qty")
	// double? reorderingMinQty;
	// @JSONField(name: "reordering_max_qty")
	// double? reorderingMaxQty;
	// @JSONField(name: "route_from_categ_ids")
	// List<dynamic>? routeFromCategIds;
	// @JSONField(name: "show_on_hand_qty_status_button")
	// bool? showOnHandQtyStatusButton;
	// @JSONField(name: "show_forecasted_qty_status_button")
	// bool? showForecastedQtyStatusButton;
	// @JSONField(name: "cost_method")
	// String? costMethod;
	// String? valuation;
	// @JSONField(name: "available_in_pos")
	// bool? availableInPos;
	// @JSONField(name: "to_weight")
	// bool? toWeight;
	// @JSONField(name: "pos_categ_id")
	// bool? posCategId;
	// @JSONField(name: "service_type")
	// String? serviceType;
	// @JSONField(name: "sale_line_warn")
	// String? saleLineWarn;
	// @JSONField(name: "sale_line_warn_msg")
	// bool? saleLineWarnMsg;
	// @JSONField(name: "expense_policy")
	// String? expensePolicy;
	// @JSONField(name: "visible_expense_policy")
	// bool? visibleExpensePolicy;
	// @JSONField(name: "sales_count")
	// double? salesCount;
	// @JSONField(name: "visible_qty_configurator")
	// bool? visibleQtyConfigurator;
	// @JSONField(name: "invoice_policy")
	// String? invoicePolicy;
	// @JSONField(name: "optional_product_ids")
	// List<dynamic>? optionalProductIds;
	int? shopNum;
  
  Product();

  factory Product.fromJson(Map<String, dynamic> json) => $ProductFromJson(json);

  Map<String, dynamic> toJson() => $ProductToJson(this);

  @override
  String toString() {
    return jsonEncode(this);
  }
}